home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2000 November
/
Chip_2000-11_cd2.bin
/
sharewar
/
Slunec
/
app
/
17
/
_SETUP.1
/
Nainstalovat novy modul.pw
< prev
next >
Wrap
Text File
|
2000-08-30
|
5KB
|
145 lines
{*******************************************************}
{ }
{ Programmer's Wizard 2 Pascal Script }
{ (popis jazyka v souboru SCRIPT.DOC) }
{ }
{*******************************************************}
uses ScriptUtils;
function GetVerStr: string;
var
mMajor, mMinor, mRel: Integer;
Begin
GetVersionEx(mMajor, mMinor, mRel);
result := 'v' + IntToStr(mMajor) + '.' + IntToStr(mMinor) + '.' +
IntToStr(mRel);
end;
function GetValidVerStr: string;
Begin
result := 'v2.0.1'; //pozadovana verze PW
end;
procedure EnsureSafeScriptingDisabled;
Begin
while IsSafeScriptingEnabled do Begin
//zobrazit upozorneni..
if not (AskUser('Tento skript vyu₧φvß n∞kterΘ chrßn∞nΘ funkce a proto ' +
'nem∙₧e pracovat p°i zapnutΘm bezpeΦnΘm skriptovßnφ. Chcete tento ' +
're₧im skriptovßnφ vypnout?')) then Halt;
//..a dialog, ve kterem lze skriptovani vypnout
Menu_FileSettingsScripting;
end;
end;
function ParseAndDisplayCheckListDialog(var AModuleList: Array;
var ACheckBoxes: Array): Boolean;
var
mList: Array of String;
mIndex: LongInt;
Begin
SetArrayLength(mList, GetArrayLength(AModuleList));
//odstranime cestu k modulu, nechame jen nazev
for mIndex := 0 to GetArrayLength(AModuleList) - 1 do
mList[mIndex] := ExtractFileName(AModuleList[mIndex]);
//zobrazit dialog se seznamem modulu, vcetne zaskrtavacich tlacitek
result := ShowCheckListDialog(
'Nainstalovat zßsuvnΘ moduly',
'Vyberte moduly, kterΘ chcete nainstalovat:',
mList,
ACheckBoxes
) <> -1;
end;
function SumBooleanArray(var ABooleanArray: Array): LongInt;
var mIndex: LongInt;
Begin
result := 0;
for mIndex := 0 to GetArrayLength(ABooleanArray) - 1 do
if ABooleanArray[mIndex] then inc(result);
end;
function InstallPlugins(var AModuleList: Array; var AMask: Array): LongInt;
var mIndex: Integer;
mSrc, mDest: String;
Begin
result := 0;
for mIndex := 0 to GetArrayLength(AModuleList) - 1 do
if AMask[mIndex] then Begin
//instalujeme modul, zobrazime to na stavovem radku
SetStatusBarMessage(
'Instaluje se...' + ExtractFileName(AModuleList[mIndex])
);
//zdrojovy a cilovy soubor
mSrc := AModuleList[mIndex];
mDest := GetPluginsDirectory + ExtractFileName(mSrc);
//soubor nesmi existovat, jinak je uz nacten
if not (FileExists(mDest)) then Begin
//zkopirovat modul do slozky /Plugins
if CopyFile(mSrc, mDest, true) then Begin
inc(result);
if not (DeleteFile(mSrc)) then ShowMessage('DoÜlo k chyb∞ p°i ' +
'odstra≥ovßnφ souboru ale modul byl nainstalovßn. Tento soubor ' +
'ji₧ nenφ nutn² a m∙₧e b²t odstran∞n:'#13#10 + mSrc);
end else
ShowMessage('DoÜlo k chyb∞ p°i kopφrovßnφ souboru. Modul nemohl ' +
'nainstalovßn.'#13#10#13#10'Zdrojov² soubor:'#13#10 + mSrc +
#13#10#13#10'Cφlov² soubor:'#13#10 + mDest);
end else
ShowMessage('Modul ' + ExtractFileName(mSrc) + ' je ji₧ nainstalovßn ' +
'a nem∙₧e b²t aktualizovßn p°i spuÜt∞nΘm programu Programme''s ' +
'Wizard 2. UkonΦete program a modul doinstalujte ruΦn∞.');
end; //if AMask[mIndex] then ...
end;
{procedure Main;}
var
mDir: String;
mModuleList: Array of String;
mCheckBoxes: Array of boolean;
Begin
if GetValidVerStr <> GetVerStr then //nespravna verze?
ShowMessage('Upozorn∞nφ: tento skript byl napsßn pro Programmers Wizard ' +
GetValidVerStr + '. Momentßln∞ spuÜt∞nß verze: ' + GetVerStr);
//tento skript pouziva chranene funkce, nebude pracovat pri zapnutem
//bezpecnem skriptovani
EnsureSafeScriptingDisabled;
//vybrat slozku s novymi moduly
ShowMessage('Vyberte slo₧ku, ve kterΘ jsou umφst∞ny novΘ moduly.');
if not (SelectDirectory('Slo₧ka s nov²mi moduly:', mDir)) then Halt;
//nesmime instalovat ze slozky, ktera uz obsahuje nainstalovane moduly
if LowerCase(mDir) = LowerCase(GetPluginsDirectory) then Begin
ShowMessage('Nelze instalovat ze slo₧ky, kterß u₧ obsahuje nainstalovanΘ ' +
'moduly.');
Halt;
end;
//vytvorit a zobrazit jejich seznam
SelectFiles(mDir, 'ZßsuvnΘ moduly (*.dll)|*.dll', mModuleList);
SetArrayLength(mCheckBoxes, GetArrayLength(mModuleList));
if not (ParseAndDisplayCheckListDialog(mModuleList, mCheckBoxes)) then Halt;
//dame uzivateli vedet co vlastne dela, treba jen zkousi skript, nemusi
//instalovat nesmyslne knihovny, ze.
if SumBooleanArray(mCheckBoxes) = 0 then Begin
ShowMessage('Nebyl vybrßn ₧ßdn² modul.');
Halt;
end;
if not (AskUser('Tento skript nynφ nainstaluje ' + IntToStr(SumBooleanArray(
mCheckBoxes)) + ' vybran²ch modul∙. Chcete pokraΦovat?')) then Halt;
//nainstalujeme vsechny vybrane moduly
ShowMessage(IntToStr(InstallPlugins(mModuleList, mCheckBoxes)) + ' modul∙ ' +
'(z ' + IntToStr(SumBooleanArray(mCheckBox)) + ' celkem) bylo ·sp∞Ün∞ ' +
'nainstalovßno. Nynφ m∙₧ete restartovat program Programmer''s Wizard 2'.');
end.